// use std::collections::HashMap;

// use serde::{Deserialize, Serialize};
// #[cfg(feature = "ssr")]
// use crate::base::{Error, Result};

// use super::column::Column;


// #[derive(Debug, PartialEq, Eq, Clone, Serialize, Deserialize)]
// pub struct ReportProps {
//     /** 报表配置名称 */
//     pub name: String,
//     pub params: HashMap<String,String>,
// }
// #[cfg(feature = "ssr")]
// impl ReportProps {
//     pub fn parse(&self,cols: &Vec<Column>) -> Result<()> {
//         for (_k,v) in &self.params {
//             if v.starts_with('@') {
//                 let col_name = v.trim_start_matches('@');
//                 if !is_show_in_toolbar(cols, col_name) {
//                     return Err(Error::Conf(format!(
//                         "report_props-params-field_name的配置字段名{}必须在field_props-edit_props中配置show_in_toolbar为true",
//                         v
//                     )));
//                 }
//             }
//         }
//         Ok(())
//     }
// }
// #[cfg(feature = "ssr")]
// fn is_show_in_toolbar(cols: &Vec<Column>, col_name: &str) -> bool {
//     for col in cols.iter() {
//         let is_ok=if col.children.is_empty() {
//             if let Some(name)=col.name.as_ref() {
//                 if let Some(props)=col.edit_props.as_ref() {
//                     if props.show_in_toolbar&&name==col_name{
//                         return true;
//                     }
//                 }
//             }
//             false
//         }else{
//             is_show_in_toolbar(&col.children,col_name)
//         };
//         if is_ok {
//             return true;
//         }
//     }
//     false
// }

